1 /* 2 3 Boost Software License - Version 1.0 - August 17th, 2003 4 5 Permission is hereby granted, free of charge, to any person or organization 6 obtaining a copy of the software and accompanying documentation covered by 7 this license (the "Software") to use, reproduce, display, distribute, 8 execute, and transmit the Software, and to prepare derivative works of the 9 Software, and to permit third-parties to whom the Software is furnished to 10 do so, all subject to the following: 11 12 The copyright notices in the Software and this entire statement, including 13 the above license grant, this restriction and the following disclaimer, 14 must be included in all copies of the Software, in whole or in part, and 15 all derivative works of the Software, unless such copies or derivative 16 works are solely in the form of machine-executable object code generated by 17 a source language processor. 18 19 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT 22 SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE 23 FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, 24 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 25 DEALINGS IN THE SOFTWARE. 26 27 */ 28 29 module derelict.purple.log; 30 31 import derelict.glib.gtypes; 32 import derelict.glib.glibconfig; 33 import derelict.glib.ghash; 34 import derelict.glib.glist; 35 import derelict.purple.conversation; 36 import derelict.purple.account; 37 import core.stdc.time; 38 import core.stdc.config; 39 import core.stdc.stdio; 40 41 extern (C): 42 43 alias _PurpleLog PurpleLog; 44 alias _PurpleLogLogger PurpleLogLogger; 45 alias _PurpleLogCommonLoggerData PurpleLogCommonLoggerData; 46 alias _PurpleLogSet PurpleLogSet; 47 alias _Anonymous_0 PurpleLogType; 48 alias _Anonymous_1 PurpleLogReadFlags; 49 alias void function (_GHashTable*, _PurpleLogSet*) PurpleLogSetCallback; 50 51 enum _Anonymous_0 52 { 53 PURPLE_LOG_IM = 0, 54 PURPLE_LOG_CHAT = 1, 55 PURPLE_LOG_SYSTEM = 2 56 } 57 58 enum _Anonymous_1 59 { 60 PURPLE_LOG_READ_NO_NEWLINE = 1 61 } 62 63 struct _PurpleLogLogger 64 { 65 char* name; 66 char* id; 67 void function (PurpleLog*) create; 68 gsize function (PurpleLog*, PurpleMessageFlags, const(char)*, time_t, const(char)*) write; 69 void function (PurpleLog*) finalize; 70 GList* function (PurpleLogType, const(char)*, PurpleAccount*) list; 71 char* function (PurpleLog*, PurpleLogReadFlags*) read; 72 int function (PurpleLog*) size; 73 int function (PurpleLogType, const(char)*, PurpleAccount*) total_size; 74 GList* function (PurpleAccount*) list_syslog; 75 void function (PurpleLogSetCallback, GHashTable*) get_log_sets; 76 gboolean function (PurpleLog*) remove; 77 gboolean function (PurpleLog*) is_deletable; 78 void function () _purple_reserved1; 79 void function () _purple_reserved2; 80 void function () _purple_reserved3; 81 void function () _purple_reserved4; 82 } 83 84 struct _PurpleLog 85 { 86 PurpleLogType type; 87 char* name; 88 PurpleAccount* account; 89 PurpleConversation* conv; 90 time_t time; 91 PurpleLogLogger* logger; 92 void* logger_data; 93 core.stdc.time.tm* tm; 94 } 95 96 struct _PurpleLogCommonLoggerData 97 { 98 char* path; 99 FILE* file; 100 void* extra_data; 101 } 102 103 struct _PurpleLogSet 104 { 105 PurpleLogType type; 106 char* name; 107 PurpleAccount* account; 108 gboolean buddy; 109 char* normalized_name; 110 } 111 112 version(Derelict_Link_Static) 113 { 114 extern( C ) nothrow 115 { 116 PurpleLog* purple_log_new(PurpleLogType type, const(char)* name, PurpleAccount* account, PurpleConversation* conv, time_t time, const(tm)* tm); 117 void purple_log_free(PurpleLog* log); 118 void purple_log_write(PurpleLog* log, PurpleMessageFlags type, const(char)* from, time_t time, const(char)* message); 119 char* purple_log_read(PurpleLog* log, PurpleLogReadFlags* flags); 120 GList* purple_log_get_logs(PurpleLogType type, const(char)* name, PurpleAccount* account); 121 GHashTable* purple_log_get_log_sets(); 122 GList* purple_log_get_system_logs(PurpleAccount* account); 123 int purple_log_get_size(PurpleLog* log); 124 int purple_log_get_total_size(PurpleLogType type, const(char)* name, PurpleAccount* account); 125 int purple_log_get_activity_score(PurpleLogType type, const(char)* name, PurpleAccount* account); 126 gboolean purple_log_is_deletable(PurpleLog* log); 127 gboolean purple_log_delete(PurpleLog* log); 128 char* purple_log_get_log_dir(PurpleLogType type, const(char)* name, PurpleAccount* account); 129 gint purple_log_compare(gconstpointer y, gconstpointer z); 130 gint purple_log_set_compare(gconstpointer y, gconstpointer z); 131 void purple_log_set_free(PurpleLogSet* set); 132 void purple_log_common_writer(PurpleLog* log, const(char)* ext); 133 GList* purple_log_common_lister(PurpleLogType type, const(char)* name, PurpleAccount* account, const(char)* ext, PurpleLogLogger* logger); 134 int purple_log_common_total_sizer(PurpleLogType type, const(char)* name, PurpleAccount* account, const(char)* ext); 135 int purple_log_common_sizer(PurpleLog* log); 136 gboolean purple_log_common_deleter(PurpleLog* log); 137 gboolean purple_log_common_is_deletable(PurpleLog* log); 138 PurpleLogLogger* purple_log_logger_new(const(char)* id, const(char)* name, int functions, ...); 139 void purple_log_logger_free(PurpleLogLogger* logger); 140 void purple_log_logger_add(PurpleLogLogger* logger); 141 void purple_log_logger_remove(PurpleLogLogger* logger); 142 void purple_log_logger_set(PurpleLogLogger* logger); 143 PurpleLogLogger* purple_log_logger_get(); 144 GList* purple_log_logger_get_options(); 145 void purple_log_init(); 146 void* purple_log_get_handle(); 147 void purple_log_uninit(); 148 } 149 } 150 else 151 { 152 extern( C ) nothrow 153 { 154 alias da_purple_log_new = PurpleLog* function(PurpleLogType type, const(char)* name, PurpleAccount* account, PurpleConversation* conv, time_t time, const(tm)* tm); 155 alias da_purple_log_free = void function(PurpleLog* log); 156 alias da_purple_log_write = void function(PurpleLog* log, PurpleMessageFlags type, const(char)* from, time_t time, const(char)* message); 157 alias da_purple_log_read = char* function(PurpleLog* log, PurpleLogReadFlags* flags); 158 alias da_purple_log_get_logs = GList* function(PurpleLogType type, const(char)* name, PurpleAccount* account); 159 alias da_purple_log_get_log_sets = GHashTable* function(); 160 alias da_purple_log_get_system_logs = GList* function(PurpleAccount* account); 161 alias da_purple_log_get_size = int function(PurpleLog* log); 162 alias da_purple_log_get_total_size = int function(PurpleLogType type, const(char)* name, PurpleAccount* account); 163 alias da_purple_log_get_activity_score = int function(PurpleLogType type, const(char)* name, PurpleAccount* account); 164 alias da_purple_log_is_deletable = gboolean function(PurpleLog* log); 165 alias da_purple_log_delete = gboolean function(PurpleLog* log); 166 alias da_purple_log_get_log_dir = char* function(PurpleLogType type, const(char)* name, PurpleAccount* account); 167 alias da_purple_log_compare = gint function(gconstpointer y, gconstpointer z); 168 alias da_purple_log_set_compare = gint function(gconstpointer y, gconstpointer z); 169 alias da_purple_log_set_free = void function(PurpleLogSet* set); 170 alias da_purple_log_common_writer = void function(PurpleLog* log, const(char)* ext); 171 alias da_purple_log_common_lister = GList* function(PurpleLogType type, const(char)* name, PurpleAccount* account, const(char)* ext, PurpleLogLogger* logger); 172 alias da_purple_log_common_total_sizer = int function(PurpleLogType type, const(char)* name, PurpleAccount* account, const(char)* ext); 173 alias da_purple_log_common_sizer = int function(PurpleLog* log); 174 alias da_purple_log_common_deleter = gboolean function(PurpleLog* log); 175 alias da_purple_log_common_is_deletable = gboolean function(PurpleLog* log); 176 alias da_purple_log_logger_new = PurpleLogLogger* function(const(char)* id, const(char)* name, int functions, ...); 177 alias da_purple_log_logger_free = void function(PurpleLogLogger* logger); 178 alias da_purple_log_logger_add = void function(PurpleLogLogger* logger); 179 alias da_purple_log_logger_remove = void function(PurpleLogLogger* logger); 180 alias da_purple_log_logger_set = void function(PurpleLogLogger* logger); 181 alias da_purple_log_logger_get = PurpleLogLogger* function(); 182 alias da_purple_log_logger_get_options = GList* function(); 183 alias da_purple_log_init = void function(); 184 alias da_purple_log_get_handle = void* function(); 185 alias da_purple_log_uninit = void function(); 186 } 187 188 __gshared 189 { 190 da_purple_log_new purple_log_new; 191 da_purple_log_free purple_log_free; 192 da_purple_log_write purple_log_write; 193 da_purple_log_read purple_log_read; 194 da_purple_log_get_logs purple_log_get_logs; 195 da_purple_log_get_log_sets purple_log_get_log_sets; 196 da_purple_log_get_system_logs purple_log_get_system_logs; 197 da_purple_log_get_size purple_log_get_size; 198 da_purple_log_get_total_size purple_log_get_total_size; 199 da_purple_log_get_activity_score purple_log_get_activity_score; 200 da_purple_log_is_deletable purple_log_is_deletable; 201 da_purple_log_delete purple_log_delete; 202 da_purple_log_get_log_dir purple_log_get_log_dir; 203 da_purple_log_compare purple_log_compare; 204 da_purple_log_set_compare purple_log_set_compare; 205 da_purple_log_set_free purple_log_set_free; 206 da_purple_log_common_writer purple_log_common_writer; 207 da_purple_log_common_lister purple_log_common_lister; 208 da_purple_log_common_total_sizer purple_log_common_total_sizer; 209 da_purple_log_common_sizer purple_log_common_sizer; 210 da_purple_log_common_deleter purple_log_common_deleter; 211 da_purple_log_common_is_deletable purple_log_common_is_deletable; 212 da_purple_log_logger_new purple_log_logger_new; 213 da_purple_log_logger_free purple_log_logger_free; 214 da_purple_log_logger_add purple_log_logger_add; 215 da_purple_log_logger_remove purple_log_logger_remove; 216 da_purple_log_logger_set purple_log_logger_set; 217 da_purple_log_logger_get purple_log_logger_get; 218 da_purple_log_logger_get_options purple_log_logger_get_options; 219 da_purple_log_init purple_log_init; 220 da_purple_log_get_handle purple_log_get_handle; 221 da_purple_log_uninit purple_log_uninit; 222 } 223 }